﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DAL.AbstractRepositories;
using EntitiesLayer;
using System.Data;
using System.Data.SqlClient;


namespace DAL.Repositorios
{
    public class DetallesPlanRepository : AbstractRepository<DetallePlan>
    {
       
        
        
        
        public override void Insert(DetallePlan entity)
        {
            Inserted.Add(entity);
        }





        public override DetallePlan GetById(int id)
        {
            DetallePlan detalle = null;

            SqlCommand cmd = new SqlCommand();
            cmd.Parameters.Add(new SqlParameter("@IdPlan", id));
            DataSet ds = DBAccess.ExecuteSPWithDS(ref cmd, "PaConsultarPlanEntrenamiento");

            foreach (DataRow dr in ds.Tables[0].Rows)
                detalle = crearDetalle(dr);


            return detalle;
        }

        protected override void InsertEntity(DetallePlan detalle)
        {
            /**
             *
             * @IdPlanE int,
		@NumSemana int,
		@IdEjercicio int,
		@Series int,
		@Repeticiones int,
		@Peso decimal(8,2)
             * */
            SqlCommand cmd = new SqlCommand();
            cmd.Parameters.Add(new SqlParameter("@IdPlanE", detalle.IdPlan));
            cmd.Parameters.Add(new SqlParameter("@NumSemana", detalle.NumeroSemana));
            cmd.Parameters.Add(new SqlParameter("@IdEjercicio", detalle.IdEjercicio));
            cmd.Parameters.Add(new SqlParameter("@Series", detalle.Series));
            cmd.Parameters.Add(new SqlParameter("@Repeticiones", detalle.Repeticiones));
            cmd.Parameters.Add(new SqlParameter("@Peso", detalle.Peso));

            DBAccess.ExecuteSPNonQuery(ref cmd, "PaInsertarDetalle");

        }



        internal IList<DetallePlan> consultarDetallesDePlan(int idPlan)
        {
            IList<DetallePlan> detalles = new List<DetallePlan>();

            SqlCommand cmd = new SqlCommand();
            cmd.Parameters.Add(new SqlParameter("@IdPlan", idPlan));
            DataSet ds = DBAccess.ExecuteSPWithDS(ref cmd, "PaDetallesDePlan");

            foreach (DataRow dr in ds.Tables[0].Rows)
                detalles.Add( crearDetalle(dr));


            return detalles;
           

        }

        protected DetallePlan crearDetalle(DataRow dr){

            return new DetallePlan{

                IdPlan= dr.Field<int>("IdPlanE"),
                NumeroSemana= dr.Field<int>("NumSemana"),
                IdEjercicio= dr.Field<int>("IdEjercicio"),
                Series= dr.Field<int>("Series"),
                Repeticiones= dr.Field<int>("Repeticiones"),
                Peso= dr.Field<decimal>("Peso")
                
            };
        }




    }
}
